Matthias Clasen [Mon, 22 Apr 2019 20:27:08 +0000 (20:27 +0000)]
broadway: Track popups
This is more or less a 1:1 copy of the X11 code.
Matthias Clasen [Mon, 22 Apr 2019 15:22:33 +0000 (15:22 +0000)]
x11: Implement popup surfaces
Make them use o-r windows, and move
with their parent.
We do a sort-of ok job on stacking order
here - whenever the parent window gets a
ConfigureNotify, we just restack all popups
directly on top of their parent. This is good
enough to keep popups on top of their parent
while we drag it around, and it gets the popup
to disappear when raising another window on
top of the parent.
Matthias Clasen [Mon, 22 Apr 2019 15:21:45 +0000 (15:21 +0000)]
wayland: Use popup parents
Make the Wayland move-to-rect implementation
use popup parents.
Matthias Clasen [Mon, 22 Apr 2019 15:20:47 +0000 (15:20 +0000)]
surface: Stop setting transient-for for popups
This was just a hack to reuse the existing
infrastructure. Now that we store parents separately,
stop doing it.
Matthias Clasen [Mon, 22 Apr 2019 15:17:53 +0000 (15:17 +0000)]
surface: Make move-to-rect work for popups
Now that we store popup parents separately,
the client-side move-to-rect implementation
must use them.
Matthias Clasen [Mon, 22 Apr 2019 14:21:17 +0000 (14:21 +0000)]
surface: Store popup parent
Store popup parents separately from transient-for
parents, since these are separate concepts with
different behaviors. And we need the parent in
the frontend, so we can use it in the fallback
move-to-rect implementation.
Matthias Clasen [Mon, 22 Apr 2019 13:16:26 +0000 (13:16 +0000)]
gdk: Introduce a popup surface type
This surface type is meant to have semantics
similar to xdg-popup, with a mandatory parent,
and relative placement using gdk_surface_move_to_rect.
Matthias Clasen [Mon, 22 Apr 2019 13:16:55 +0000 (13:16 +0000)]
x11: Remove useless checks
All surfaces are toplevels now, no need
to check for this all over the place.
Matthias Clasen [Mon, 22 Apr 2019 01:14:46 +0000 (01:14 +0000)]
Get rid of GdkSurfaceImpl
We don't need the complicated wrapper system anymore,
since client-side windows are gone. This commit moves
all the vfuncs to GtkSurfaceClass, and changes the
backends to just derive their surface implementation
from GdkSurface.
Matthias Clasen [Sun, 21 Apr 2019 18:42:31 +0000 (14:42 -0400)]
gdk: Add a private header
This is in preparation for getting rid of GdkSurfaceImpl.
Matthias Clasen [Sun, 21 Apr 2019 16:51:10 +0000 (16:51 +0000)]
Rename surface constructors
We want to use a gdk_surface_new_popup for popups,
and align the constructor names with the surface
types, so rename
gdk_surface_new_popup -> gdk_surface_new_temp
gdk_surface_new_popup_full -> gdk_surface_new_popup
The temp surface type will disappear eventually.
Matthias Clasen [Sat, 20 Apr 2019 15:24:42 +0000 (15:24 +0000)]
surface: Cosmetics
Matthias Clasen [Sun, 21 Apr 2019 16:33:22 +0000 (16:33 +0000)]
gdk: Drop pass-through surfaces
With client-side windows gone, this property
is no longer used at all, and has been replaced
by a similar concept on the widget level.
Drop it.
Matthias Clasen [Sun, 21 Apr 2019 16:24:07 +0000 (12:24 -0400)]
gdk: Drop GdkWindowAttr
All the information in it is already contained
in the surface object we pass along, and none
of the backend implementations were using the
attributes at all.
Matthias Clasen [Sun, 21 Apr 2019 16:06:11 +0000 (12:06 -0400)]
gdk: Drop input-only surfaces
We are not creating such surfaces anymore, and
they were only ever meaningfully implemented
on X11. Drop the concept, and the api for determining
if a surface is input-only.
Matthias Clasen [Sun, 21 Apr 2019 15:39:35 +0000 (15:39 +0000)]
gdk: Remove an unused field
Spring cleaning. We are not using this field
at all, since we have the input_only boolean.
Matthias Clasen [Sat, 20 Apr 2019 04:30:33 +0000 (04:30 +0000)]
Drop gdk_surface_new_temp
This is no longer used, and the only difference
to gdk_surface_new_popup is input-only, which is
an X11-only concept.
Matthias Clasen [Sat, 20 Apr 2019 04:32:00 +0000 (04:32 +0000)]
menu: Stop using gdk_surface_new_temp
We can just as well use gdk_surface_new_popup.
Matthias Clasen [Sat, 20 Apr 2019 04:31:27 +0000 (04:31 +0000)]
x11: Stop using gdk_surface_new_temp
We can just as well use gdk_surface_new_popup.
Matthias Clasen [Sat, 20 Apr 2019 01:29:25 +0000 (01:29 +0000)]
broadway: Stop using gdk_surface_new_temp
This is in preparation for adding a proper
popup surface type.
Matthias Clasen [Mon, 29 Apr 2019 16:49:38 +0000 (16:49 +0000)]
wayland: Remove a useless switch
We are setting the title unconditionally, now
Matthias Clasen [Fri, 19 Apr 2019 23:15:26 +0000 (19:15 -0400)]
docs: Remove references to gdk_device_grab
It is no longer public api, refer to gdk_seat_grab instead.
Matthias Clasen [Fri, 19 Apr 2019 23:08:24 +0000 (23:08 +0000)]
gdk: Remove remnants of client-side windows
Now that all surfaces are native, we don't need
to separately keep track of grab surfaces and
their native ancestor anymore.
Matthias Clasen [Fri, 19 Apr 2019 20:18:57 +0000 (16:18 -0400)]
Drop gtk_widget_register_surface
This is no longer used.
Matthias Clasen [Fri, 19 Apr 2019 20:14:44 +0000 (20:14 +0000)]
popover: Stop using gtk_widget_register_surface
The GtkRoot implementations are expected to handle
the necessary surface setup themselves, going forward.
Matthias Clasen [Fri, 19 Apr 2019 20:14:09 +0000 (20:14 +0000)]
window: Stop using gtk_widget_register_surface
The GtkRoot implementations are expected to handle
the necessary surface setup themselves, going forward.
Matthias Clasen [Fri, 19 Apr 2019 20:13:49 +0000 (20:13 +0000)]
menu: Stop using gtk_widget_register_surface
It does not seem to be necessary at all.
Matthias Clasen [Fri, 19 Apr 2019 19:39:23 +0000 (15:39 -0400)]
surface: Make gdk_surface_get_device_position void
None of the callers were using the return value,
and without child surfaces, it is not very useful.
Matthias Clasen [Mon, 25 Mar 2019 04:26:42 +0000 (00:26 -0400)]
x11: Drop a gratitious use of gdk_event_get_root_coords
We are in the backend, so we can do the translation ourselves.
Matthias Clasen [Mon, 25 Mar 2019 04:00:14 +0000 (00:00 -0400)]
Remove gdk_surface_get_geometry as public api
We still need to keep the vfunc around, since the
fallback implementation of gdk_display_get_monitor_at_surface
uses it. So, a GDK backend must either have root coordinates
or always return a monitor from monitor_at_surface.
Matthias Clasen [Mon, 25 Mar 2019 03:15:01 +0000 (23:15 -0400)]
Drop gdk_surface_get_root_origin
It was not used.
Matthias Clasen [Mon, 25 Mar 2019 03:09:48 +0000 (23:09 -0400)]
Remove gdk_surface_get_root_coords as public api
We still need to keep the vfunc around, since the
fallback implementation for move_to_rect uses it.
So, a GDK backend must either have root coordinates
or implement move_to_rect.
Matthias Clasen [Mon, 25 Mar 2019 01:04:34 +0000 (21:04 -0400)]
Remove gdk_surface_coords_to/from_parent
This api was unused, and surfaces have no parents anymore.
Matthias Clasen [Sun, 24 Mar 2019 20:30:32 +0000 (16:30 -0400)]
surface: Small simplification
No more special-casing of state setting.
Matthias Clasen [Sun, 24 Mar 2019 20:24:30 +0000 (16:24 -0400)]
surface: Simplify destroy implementation
Without child surfaces, there is no need to recurse.
Matthias Clasen [Sun, 24 Mar 2019 19:42:32 +0000 (15:42 -0400)]
surface: Remove abs_x/abs_y
We no longer have child windows, so the offset is
always 0.
Matthias Clasen [Sun, 24 Mar 2019 19:26:55 +0000 (15:26 -0400)]
surface: Small cleanup
Every surface has an impl now, no need to check.
Matthias Clasen [Sat, 23 Mar 2019 13:35:14 +0000 (09:35 -0400)]
surface: Simplify some code
Fold gdk_surface_process_updates_recurse into its
only caller. There is no recursion here anymore.
Matthias Clasen [Sat, 23 Mar 2019 13:29:09 +0000 (09:29 -0400)]
Remove surface->children
This field is not used at all anymore.
Matthias Clasen [Sat, 23 Mar 2019 13:28:50 +0000 (09:28 -0400)]
gdk: Stop using surface->children
It is always NULL.
Matthias Clasen [Sat, 23 Mar 2019 13:28:11 +0000 (09:28 -0400)]
wayland: Stop using surface->children
It is always NULL.
Matthias Clasen [Sat, 23 Mar 2019 13:13:55 +0000 (09:13 -0400)]
Remove surface->parent
This field is no longer used.
Matthias Clasen [Sat, 23 Mar 2019 13:13:37 +0000 (09:13 -0400)]
gdk: Stop using surface->parent
It is always NULL.
Matthias Clasen [Sun, 21 Apr 2019 17:08:24 +0000 (13:08 -0400)]
broadway: Stop using surface->parent
Matthias Clasen [Sat, 23 Mar 2019 13:12:10 +0000 (09:12 -0400)]
x11: Stop using surface->parent
It is always NULL.
Matthias Clasen [Sat, 23 Mar 2019 13:11:46 +0000 (09:11 -0400)]
wayland: Stop using surface->parent
It is always NULL.
Matthias Clasen [Sat, 23 Mar 2019 12:43:07 +0000 (08:43 -0400)]
surface: Remove code dealing with child surfaces
We no longer have child surfaces, so this code
is never run.
Matthias Clasen [Sat, 23 Mar 2019 12:36:25 +0000 (08:36 -0400)]
surface: minor cleanup
Make gdk_surface_new fully private, and reduce the use
of GdkSurfaceAttr.
Matthias Clasen [Fri, 22 Mar 2019 18:24:39 +0000 (14:24 -0400)]
Drop child surfaces
Drop gdk_surface_child_new and the child surface type,
since we no longer use them. Deprecate surface apis
that only make sense with child surfaces.
Matthias Clasen [Sat, 23 Mar 2019 06:01:52 +0000 (02:01 -0400)]
widget: Stop using child surface apis
All our surfaces are toplevels now, and thus all native.
Matthias Clasen [Sat, 23 Mar 2019 05:59:47 +0000 (01:59 -0400)]
a11y: Stop supporting ATK_XY_SCREEN
We were already not supporting ATK_XY_PARENT, and we can't
support global positions, so just always do ATK_XY_WINDOW.
Matthias Clasen [Sat, 23 Mar 2019 06:00:59 +0000 (02:00 -0400)]
xim: Stop using child surface apis
We no longer have child surfaces.
Drop code that only makes sense in
their presence.
Matthias Clasen [Sat, 23 Mar 2019 04:14:46 +0000 (00:14 -0400)]
wayland: Stop using child surface apis
We no longer have child surfaces.
Drop code that only makes sense in their
presence.
Matthias Clasen [Sat, 23 Mar 2019 04:14:00 +0000 (00:14 -0400)]
x11: Stop using child surface api
We no longer have child surfaces.
Drop code that only makes sense in
that case.
Matthias Clasen [Sat, 20 Apr 2019 04:32:29 +0000 (04:32 +0000)]
entry completion: Use a popover
This lets us remove a use of GTK_WINDOW_POPUP,
which should eventually be going away.
We need to disable treeview search, since it
creates a toplevel that will disrupt our grabbing
popup, causing it to be dismissed.
We don't need to grab ourselves, since the popover
code does it for us. We don't need to reposition our
window, since the popover takes care of that too.
Matthias Clasen [Thu, 2 May 2019 21:33:53 +0000 (17:33 -0400)]
main: Use gtk_widget_get_native
Matthias Clasen [Mon, 22 Apr 2019 21:39:18 +0000 (21:39 +0000)]
main: Remove special-case hiding popopvers
This is now happening in GDK, so we don't have
to do this here anymore.
Matthias Clasen [Fri, 26 Apr 2019 03:18:15 +0000 (03:18 +0000)]
widget: Remove some unneeded popover special-casing
Matthias Clasen [Sun, 24 Mar 2019 15:41:55 +0000 (11:41 -0400)]
Adwaita: Give popover menus a background
This makes the hover highlight on menu items visible.
Matthias Clasen [Fri, 26 Apr 2019 23:17:37 +0000 (23:17 +0000)]
menubutton: Allocate the popover
This is temporary, until we've figured out
the proper way of hooking this up
Matthias Clasen [Fri, 22 Mar 2019 02:12:22 +0000 (22:12 -0400)]
Adapt to new popover lifecycle
We need to unparent popovers in dispose.
Matthias Clasen [Mon, 29 Apr 2019 03:25:37 +0000 (03:25 +0000)]
Reimplement GtkPopover
Matthias Clasen [Wed, 20 Mar 2019 00:05:17 +0000 (20:05 -0400)]
surface: Start sketching a new surface type
Start by adding a constructor. We have to call it
gdk_surface_new_popup_full for now, since gdk_surface_new_popup
is taken. This may be reshuffled later.
Matthias Clasen [Sun, 26 May 2019 17:16:40 +0000 (17:16 +0000)]
menushell: Keep outside clicks working
We need to unset event propagation limits here
to keep receiving outside clicks that cause us
to close the menu.
Matthias Clasen [Mon, 29 Apr 2019 02:19:44 +0000 (02:19 +0000)]
Introduce event controller propagation limits
Limit event handlers by default to only handle
events targeting the same surface as their widget.
Matthias Clasen [Mon, 18 Mar 2019 11:51:47 +0000 (07:51 -0400)]
widget: Don't snapshot foreign children
When snapshotting, we walk down the widget tree.
We need to skip children that have a different
surface, since those will do their own snapshot.
Matthias Clasen [Sun, 19 May 2019 20:35:59 +0000 (20:35 +0000)]
root: Make gtk_root_get_display public
This is following the precedent of making
GtkNative getters public.
Matthias Clasen [Sun, 26 May 2019 17:39:11 +0000 (17:39 +0000)]
GtkRoot: Drop overlap with GtkNative
Drop the parts from the GtkRoot interface
that have been taken over by GtkNative.
Matthias Clasen [Mon, 29 Apr 2019 17:47:40 +0000 (13:47 -0400)]
widget: Use GtkNative
Matthias Clasen [Sun, 17 Mar 2019 23:41:26 +0000 (19:41 -0400)]
Review and replace uses of get_toplevel
Now that roots can have parent widgets, we need to
carefully examine all calls of gtk_widget_get_toplevel,
and replace them with gtk_widget_get_root if we want
the nearest root, and not the ultimate end of the parent
chain.
Matthias Clasen [Sun, 26 May 2019 18:02:55 +0000 (18:02 +0000)]
Use GtkNative APIs instead of GtkRoot
Matthias Clasen [Thu, 2 May 2019 21:32:54 +0000 (17:32 -0400)]
Add gtk_widget_get_native
This is a common enough operation to deserve api.
Matthias Clasen [Mon, 29 Apr 2019 05:42:39 +0000 (05:42 +0000)]
root: Require GtkNative
Matthias Clasen [Sun, 26 May 2019 17:43:46 +0000 (17:43 +0000)]
window: Implement GtkNative
Adapt GtkWindow to implement both GtkRoot and GtkNative.
Matthias Clasen [Tue, 28 May 2019 20:22:18 +0000 (16:22 -0400)]
native: Add to docs
Matthias Clasen [Sun, 26 May 2019 17:38:27 +0000 (17:38 +0000)]
Introduce GtkNative
Split off the parts of GtkRoot that are specific
to widgets having a surface into the GtkNative
interface.
Matthias Clasen [Sun, 3 Mar 2019 22:42:36 +0000 (17:42 -0500)]
main: guard window-specific code paths
This was overlooked when I first tried to
make things for GtkRoot.
Matthias Clasen [Sun, 24 Feb 2019 23:41:26 +0000 (18:41 -0500)]
widget: guard popover-specific code paths
This is essentially a special case just for GtkPopover,
which is the last widget with a child surface.
Matthias Clasen [Sun, 19 May 2019 03:41:08 +0000 (03:41 +0000)]
Export gtk_widget_render privately
We need it in gtkwindow.c and gtkpopover.c.
Benjamin Otte [Tue, 28 May 2019 17:18:35 +0000 (19:18 +0200)]
surface: Add marshallers for new events
This way, sysprof can profile through the signal emission, and for
signals this low in the stack, this is very useful.
Matthias Clasen [Tue, 28 May 2019 03:02:33 +0000 (03:02 +0000)]
file chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 02:48:26 +0000 (02:48 +0000)]
file chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 02:42:14 +0000 (02:42 +0000)]
file chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 02:41:15 +0000 (02:41 +0000)]
file chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 02:40:08 +0000 (02:40 +0000)]
file chooser button: Make final
Matthias Clasen [Tue, 28 May 2019 02:37:41 +0000 (22:37 -0400)]
font chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 02:27:47 +0000 (22:27 -0400)]
font chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:57:47 +0000 (00:57 +0000)]
font chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 00:56:41 +0000 (00:56 +0000)]
font chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 00:55:28 +0000 (00:55 +0000)]
font button: Make final
Matthias Clasen [Tue, 28 May 2019 00:51:46 +0000 (20:51 -0400)]
app chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:44:01 +0000 (20:44 -0400)]
app chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:30:59 +0000 (20:30 -0400)]
app chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 00:30:48 +0000 (20:30 -0400)]
app chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 00:30:35 +0000 (20:30 -0400)]
app chooser button: Make final
Matthias Clasen [Tue, 28 May 2019 00:23:17 +0000 (00:23 +0000)]
color chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:20:03 +0000 (00:20 +0000)]
color chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:04:15 +0000 (00:04 +0000)]
color chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 00:04:01 +0000 (00:04 +0000)]
color chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 00:03:46 +0000 (00:03 +0000)]
color button: Make final